Back to index

Living with Complexity

Authors: Donald A. Norman

Overview

In this book, I tackle the pervasive feeling of frustration people experience with modern technology. I argue that the issue isn’t complexity itself; rather, it’s poor design that turns the necessary complexity of the world into complicated, confusing experiences. This book is for anyone who designs or interacts with technology, from everyday consumers to professional engineers, designers, and product managers. It is particularly relevant for those working on artificial intelligence, as AI systems often exhibit high levels of complexity that require careful management to ensure usability and user trust.

My central argument is that simplicity is not the opposite of complexity, but a state of mind. We can embrace complexity if it is made understandable. The key to doing so is good design that provides clear conceptual models and signifiers, structures information effectively, and leverages automation thoughtfully. I emphasize the importance of understanding human behavior, social interactions, and cultural differences in design, recognizing that the best systems work in partnership with the people who use them.

Throughout the book, I illustrate these principles with real-world examples, from everyday objects like salt and pepper shakers and toilet paper holders to sophisticated systems like airplanes, music services, and hospitals. I also provide practical advice for both designers and users on how to tame complexity. For designers, I advocate for a ‘sociable’ approach that considers the user’s emotions and social context. For users, I emphasize the importance of learning how things work and making use of external aids like checklists and reminders.

Book Outline

1. Living with Complexity

This chapter sets the scene, arguing that complexity is a natural part of the world and, in fact, we crave it. We need complex books, stories, music, and games to keep us interested and engaged. The real problem with today’s technology is not that it is complex–it needs to be in order to deliver all the capabilities we demand of it–but that it is needlessly complicated, confusing, and frustrating. The major cause of this is poor design.

Key concept: “New stuff that doesn’t work very well or that works in mysterious, unknown ways.”

2. Simplicity Is in the Mind

This chapter makes the important point that complexity is not the opposite of simplicity. Complexity is a fact of the world, while simplicity is a state of mind. This means that the real goal of design is not to make things simple, but rather to make them understandable. We need good conceptual models that explain how things work and clear signifiers that communicate what actions are possible.

Key concept: “Every application has an inherent amount of irreducible complexity. The only question is who will have to deal with it, the user or the developer (programmer or engineer).” (Tesler and Saffer 2007)

3. How Simple Things Can Complicate Our Lives

This chapter argues that many everyday things, though simple in isolation, can become frustratingly complex when encountered in multitude or when they require social synchronization of behavior. It introduces the idea of forcing functions to guide behavior and of putting information into the world to reduce memory load and ambiguity.

Key concept: “Put the knowledge in the world.”

4. Social Signifiers

This chapter explores the concept of social signifiers, the cues we pick up from the behavior of others. These are powerful tools that allow us to quickly understand new situations and behave appropriately. Social signifiers can be deliberate, as in the case of traffic lights, or they can be incidental, like worn paths across a lawn revealing the most efficient route. Importantly, social signifiers are dependent on shared cultural knowledge, meaning their interpretations can vary and be prone to error.

Key concept: “Social signifiers allow us to navigate in otherwise complex, potentially confusing environments.”

5. Design in Support of People

This chapter delves into the challenges of designing technology that supports people, especially when tasks involve multiple tools and technologies and are prone to interruptions. It argues for the importance of sociable design, which accounts for the needs and capabilities of people, provides meaningful feedback, and supports both individual and group activities.

Key concept: “As it stands, we must accommodate technology. It is time to transform the technology to accommodate us.”

6. Systems and Services

This chapter focuses on the importance of designing systems and services holistically, considering the entire user journey and not just individual components. This includes understanding both the ‘frontstage’ (the parts of the service that are visible to the customer) and the ‘backstage’ (the hidden operations that support the service). It introduces service blueprints as a tool for visualizing and designing service experiences.

Key concept: “Never solve the problem the client has asked you to solve.”

7. The Design of Waits

This chapter focuses on the universal experience of waiting and how to make it more tolerable. It introduces six design principles for waiting lines, emphasizing the importance of providing clear information, managing expectations, and keeping people occupied. The chapter also discusses double buffering, a technique for smoothing the flow of people or items through a system, and techniques like targeted admissions and reservations to reduce waiting time and anxiety.

Key concept: “Six Design Principles for Waiting Lines: 1. Provide a conceptual model. 2. Make the wait seem appropriate. 3. Meet or exceed expectations. 4. Keep people occupied. 5. Be fair. 6. End strong, start strong.

8. Managing Complexity

This chapter lays out the key principles for managing complexity from both the designer’s perspective and the user’s perspective. For designers, it emphasizes the importance of providing clear signifiers, structuring information, leveraging automation, and using forcing functions and nudges to guide behavior. For users, it advocates for acceptance of complexity, breaking down tasks into smaller modules, and using external aids like checklists and reminders. It highlights the importance of collaboration between designers and users to create understandable and usable systems.

Key concept: “‘Divide and conquer’ is an old strategy with powerful implications for design. When there are many pieces, the structure can be made modular so that only the pieces of concern at the moment are in focal attention.

9. The Challenge

This final chapter addresses the challenges and opportunities of living with complexity in a world increasingly dominated by technology. It argues that although technology often creates complexity, it also offers tools for managing that complexity. The chapter concludes by emphasizing the need for a partnership between designers and users, where designers create understandable systems and users take responsibility for learning and mastering those systems.

Key concept: “Living with technology is a partnership between the designers and us.”

Essential Questions

1. Why is the modern world so often experienced as complicated, and what can be done to mitigate this?

Complexity is a natural part of the world, and we as humans often seek it out in our entertainment, hobbies, and professions. The issue arises when this complexity becomes ‘complicated,’ that is, confusing, frustrating, and seemingly arbitrary. This often stems from poor design choices that fail to provide clear conceptual models and signifiers, leaving users feeling helpless and powerless. By understanding the underlying structure and logic of a system, we can transform what appears complex into something understandable and even enjoyable.

2. Is simplicity the ultimate goal of design, and if not, what is?

The persistent cry for simplicity in design is often misguided. While simple solutions are appealing, they often fail to address the inherent complexities of the tasks we need to accomplish. People desire powerful tools and rich experiences, and these require a certain level of complexity. The challenge for designers is not to eliminate complexity but to manage it effectively, making systems understandable and usable without sacrificing their capabilities.

3. What are social signifiers, and how do they impact our experience with technology?

Social signifiers are powerful cues that help us navigate the world, especially in new or unfamiliar situations. They range from the obvious, like painted traffic lanes, to the subtle, like wear patterns on a sidewalk. These signifiers rely on shared cultural knowledge and assumptions, which means they can be ambiguous and lead to misunderstandings. Designers can leverage social signifiers to guide user behavior, but they must be mindful of cultural differences and potential misinterpretations.

4. How does service design differ from product design, and what are the key considerations for creating successful service experiences?

The design of services, which often involve complex systems and multiple stakeholders, is even more challenging than product design. It requires a holistic, system-level approach that considers the entire user journey, including the ‘frontstage’ and ‘backstage’ aspects of the service. Good service design should be human-centered, focusing on the needs and experiences of both customers and employees, and it should be robust enough to handle unexpected events and disruptions.

5. What is the role of both designers and users in creating a world where complexity is manageable and even empowering?

Living with complexity is a partnership between designers and users. Designers must create understandable, usable systems that provide clear conceptual models and signifiers, structure information effectively, and leverage automation thoughtfully. Users must be willing to invest the time and effort to learn and master these systems, utilizing external aids like checklists, reminders, and learning resources to support their understanding. This collaboration is essential for creating a world where technology empowers rather than frustrates.

Key Takeaways

1. Forcing Functions Can Simplify User Interaction

This concept, introduced in Norman’s ‘The Design of Everyday Things,’ refers to a design element that prevents undesirable actions while guiding users towards the correct behavior. This simplifies user interaction by eliminating the need for complex decision-making, as the system inherently guides them towards the intended action.

Practical Application:

An AI product engineer could apply the concept of forcing functions when designing a complex system by building in constraints that prevent users from making errors. For example, in a system for training a machine learning model, a forcing function could prevent users from starting the training process before essential parameters are set correctly, thus avoiding wasted time and resources due to user error.

2. Divide and Conquer: Modular Design for Complexity

Breaking down a complex task or system into smaller, manageable modules makes it easier for people to understand and learn. Each module becomes a self-contained unit with a clear purpose and function, reducing the overall cognitive load and facilitating a sense of accomplishment as users master each step.

Practical Application:

An AI product engineer could apply this principle when designing a user interface for a complex AI system. Instead of overwhelming users with all the system’s features and controls at once, they could organize the interface into modular sections that are revealed progressively as needed, guided by the user’s current task or goal. This simplifies the user experience and reduces cognitive overload.

3. Just-in-Time Learning: Delivering Information When Needed

Traditional learning methods often fail because they require users to learn information before they actually need it, leading to boredom and disinterest. By providing relevant information and guidance precisely when the user encounters a need or problem, learning becomes more effective, efficient, and engaging.

Practical Application:

An AI product engineer could design an AI-powered personal assistant that learns a user’s preferences and habits over time. This assistant could then suggest relevant information, services, or actions just when the user needs them, without requiring explicit requests. This would reduce cognitive load and make the AI feel more like a helpful partner rather than a demanding tool.

4. Transparency and Explainability: Building Trust in AI Systems

People are more likely to trust and accept complex systems when they understand how they work. Providing clear explanations and transparent insights into the system’s reasoning and decision-making processes can increase user confidence and make the system feel less like a ‘black box.’

Practical Application:

In an AI system for medical diagnosis, the system could be designed to not only provide its diagnosis and treatment recommendations but also offer explanations for its reasoning, drawing on relevant medical research and the patient’s specific medical history. This would increase trust in the system and help medical professionals understand and evaluate its recommendations more effectively.

5. Sociable Design: Creating Technology That Works with People

Sociable design focuses on creating technology that is not just functional but also pleasant and enjoyable to use. This means considering the user’s emotional state, providing clear and helpful feedback, and offering appropriate assistance when things go wrong. Sociable design recognizes that technology should work in partnership with people, supporting their needs and goals rather than imposing unnecessary burdens.

Practical Application:

An AI product engineer developing a chatbot for customer service could use the principles of sociable design to make the chatbot more empathetic and helpful. The chatbot could be programmed to acknowledge user frustration, offer apologies for inconveniences, and proactively offer solutions or escalate to a human representative when needed.

Suggested Deep Dive

Chapter: Chapter 8: Managing Complexity

This chapter provides the most comprehensive and practical guidance for designers and AI engineers on how to apply the principles of human-centered design and complexity management. It delves into specific techniques like modularization, automation, forcing functions, and learning aids, with concrete examples and practical considerations for their implementation in complex systems.

Memorable Quotes

Chapter 1. 1

“The guiding motto in the life of every natural philosopher should be, Seek simplicity and distrust it.”

Chapter 1. 5

“Tech•nol•o•gy (noun): New stuff that doesn’t work very well or that works in mysterious, unknown ways.”

Chapter 1. 9

“The major cause of complicated, confusing, frustrating systems is not complexity: It is poor design.”

Chapter 2. 46

“Every application has an inherent amount of irreducible complexity. The only question is who will have to deal with it, the user or the developer (programmer or engineer).” (Tesler and Saffer 2007)

Chapter 4. 99

“Social signifiers allow us to navigate in otherwise complex, potentially confusing environments.”

Comparative Analysis

Norman’s ‘Living with Complexity’ echoes themes found in other design classics like ‘The Design of Everyday Things’ but with a sharper focus on the interplay between human cognition and technological complexity. It shares a kinship with works like Steve Krug’s ‘Don’t Make Me Think,’ which emphasizes user-centered design for web usability, but Norman dives deeper into the psychology behind user behavior and the role of culture and social interaction in shaping our experiences with technology. While many books advocate for simplicity, Norman uniquely embraces complexity as a necessary and even desirable aspect of our lives, provided it is well-managed through design. He disagrees with the common notion that features and simplicity are always at odds, arguing that well-designed systems can offer both.

Reflection

Norman’s ‘Living with Complexity’ is a timely and thought-provoking work, particularly relevant in our current era of rapid technological advancement. His emphasis on human-centered design and the need to understand human behavior and cognition are essential for creating AI systems that are truly beneficial and avoid unintended consequences. While some may argue that he oversimplifies the challenges of designing for complexity, his core message resonates strongly: complexity is inevitable, but confusion is not. However, one area where I would challenge Norman’s perspective is his criticism of automation. While he acknowledges its potential benefits, he focuses heavily on the risks and complexities it introduces. In the context of AI, automation is not just a tool for simplifying tasks but a fundamental building block of many AI systems. We need to move beyond a simple ‘human vs. machine’ dichotomy and embrace a future where AI and humans work together, complementing each other’s strengths and mitigating each other’s weaknesses. The challenge for AI designers is to create automation that is transparent, explainable, and controllable, allowing users to understand and trust the decisions made by AI systems. Overall, ‘Living with Complexity’ is an important contribution to the design discourse, offering valuable insights and practical guidelines for creating technology that enhances human life in a complex world. Its principles are highly relevant to the field of AI and should be essential reading for anyone designing or building AI systems.